package com.yonyou.pmclouds.plan.plandriven.rmiitf;

import com.yonyou.pmclouds.basecom.exception.BusinessException;
import com.yonyou.pmclouds.plan.entity.ScheduleItemVO;
import com.yonyou.pmclouds.plan.plandriven.entity.InvokeResultVO;
import com.yonyou.pmclouds.plan.plandriven.entity.PlanDrivenParamVO;

/**
 * 驱动计划接口
 */
public interface IScheduleDriven {
    /**
     * 里程碑关联单据驱动计划完成，并发送消息通知，供nc、友工程部分单据调用
     *
     * @param paramVO
     * @return
     * @throws BusinessException
     */
    InvokeResultVO drivePlanByMilestoneBill(PlanDrivenParamVO paramVO) throws BusinessException;

    /**
     * 进度填报驱动计划完成，并发送消息通知
     *
     * @param leafPlanVOs
     * @return
     * @throws BusinessException
     */
    InvokeResultVO drivePlansByProgress(ScheduleItemVO[] leafPlanVOs) throws BusinessException;

    /**
     * 手动发送消息（补偿重发）
     *
     * @param planIds
     * @return
     * @throws BusinessException
     */
    InvokeResultVO sendMessageManually(String[] planIds) throws BusinessException;
}
